package com.hongyi.dto;

/**
 * @Author: hongyi
 * @CreateTime: 2024-09-25
 */


import java.time.Instant;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class Test01 { // 注意类名通常首字母大写
    public static void main(String[] args) {
        // 给定时间（假设它是UTC时间）
        String givenTimeStr = "2024-10-31 23:59:59";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("UTC"));
        LocalDateTime givenTime = LocalDateTime.parse(givenTimeStr, formatter);

        // 获取当前时间（UTC）
        Instant now = Instant.now();

        // 转换为北京时间（UTC+8）
        ZonedDateTime nowBeijing = now.atZone(ZoneId.of("Asia/Shanghai"));
        System.out.println("当前北京时间为： " + nowBeijing.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

        // 将LocalDateTime转换为Instant（使用UTC时区）
        Instant givenTimeInstant = givenTime.atZone(ZoneId.of("UTC")).toInstant();

        // 计算时间差（秒），注意这里应该是给定时间与当前时间的差
        long timeDifference = java.time.Duration.between(givenTimeInstant, now).getSeconds();

        // 如果想要得到北京时间与给定UTC时间的时间差（即北京时间减去UTC时间），则应该这样计算
        long timeDifferenceBeijing = java.time.Duration.between(givenTimeInstant, nowBeijing.toInstant()).getSeconds();

        // 打印时间差（UTC时间差）
        System.out.println("UTC时间差（秒）: " + timeDifference);

        // 打印北京时间与给定UTC时间的时间差
        System.out.println("北京时间与UTC时间差（秒）: " + timeDifferenceBeijing);
    }
}
